package com.zhang.thread;

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * @author : [WangWei]
 * @version : [v1.0]
 * @className : Main
 * @description : [初始化线程池，线程提交任务]
 * @createTime : [2022/12/28 9:20]
 * @updateUser : [WangWei]
 * @updateTime : [2022/12/28 9:20]
 * @updateRemark : [描述说明本次修改内容]
 */
public class Main {
    public static void main(String[] args) {
        //实例化一个固定大小为5个线程的newFixedThreadPool线程池
        ExecutorService excutorService = Executors.newFixedThreadPool(10);
        //构造CountDownLatch传入数量为1000，初始化的计数器大小为1000,与学生数量对应。
        CountDownLatch latch = new CountDownLatch(1000);
        //计算1000个学生的学习数据
        for (int i = 0; i <1000 ; i++) {
            //线程提交任务
            excutorService.submit(new CalculationStudentsData(i,latch));
        }
        try{
            //使调用该方法的主线程处于等待状态，当倒数到0时主线程才执行。
            System.out.println("================================");
            latch.await();
            System.out.println("开始执行主线程");
        } catch (InterruptedException e) {
            throw new RuntimeException("学生学习数据普通版多线程处理异常",e);
        }
        //关闭线程池
        excutorService.shutdown();
    }
}

